Bitmapped text and graphics applications have become commonplace at the present time. Such applications which provide for "windowing" are also available. "Windowing" is a technique whereby a visual display screen at a terminal or workstation is partitioned into distinct, independent areas (windows), each containing potentially distinct and independent information. One window may be an active window into which text is being entered, for example, while other windows may be temporarily idle or engaged in other functions, such as outputting to a printer. An operator of such a terminal or workstation usually is able to scroll the information in all windows vertically or horizontally.
Typically, windows may be defined to be located anywhere on a screen, as desired by a user. Thus, several windows can be simultaneously present on the screen with various portions of some or all of the windows overlapping with other windows. I refer to this as independent windowing. A window with a higher "depth" that is overlapping a window with lower "depth" creates a hidden portion of the lower depth window in the overlapped portion.
At the present time, all known workstations that support independent "windowing" use raster scan visual output devices. Raster scanning is the same technique used in commercial television sets to continuously refresh the screen. The screen is repetitively scanned line-by-line by a modulated electronic beam moving from the top to the bottom of the screen. In present art independent "windowing" technology, a contiguous block of display memory (the bitmap) stores the information to be displayed on the screen. As the raster moves across and then down the screen, data is read from consecutive address locations of the display memory and used to modulate the scanning beam.
A difficulty with this arrangement of refreshing the screen is that large amounts of data shifting in the display memory is typically required. There are a number of reasons for this. If an operator is engaged in modifying the contents of an active window, the locations of the display memory corresponding to the window are being changed accordingly, while the remaining portions of the memory remain static. If the active window overlaps other windows, the contents of those windows cannot be displayed on the screen and must be temporarily stored in another hidden memory not associated with the display. If the operator selects another active window, the contents of the display memory must be updated to reflect the new state of the screen to be displayed. This usually involves moving large blocks of data from the hidden memory to the display memory. Vertical and horizontal scrolling of windows add further complexities to the problem of updating the display memory, as the reader will now appreciate.
Attempts at achieving sufficient processing power to satisfactorily provide independent "windowing" without unacceptable delays follow two general patterns. Early bitmapped workstations used special high speed bit sliced processors operating in parallel on the same input data to generate and store the correct data in the display memory. Recently, more powerful general purpose processors have been successfully used for this purpose by providing programs optimized to handle a number of identified special cases involving data block transfers. Such a technique is called BITBLT (bit block logical transfer) and is discussed by Giubas and Stolfi in "A Language for Bitmap Manipulation", ACM Transactions on Graphics Vol. 1, pp. 191-214, July 1982. The technique still requires massive amounts of data transfer in the display memory, however. For this reason, the real-time performance of graphics systems still leaves much to be desired. There is a need in the art, therefore, to find ways to more efficiently process graphics display data.